// ==UserScript==
// @name           Download YouTube Videos as MP4
// @description    Adds an option to download YouTube videos.
// @namespace      http://googlesystem.blogspot.com
// @include        http://*.youtube.com/watch?*
// @include        http://youtube.com/watch?*
// @version        0.7
// ==/UserScript==

(function () {

  if (document.getElementById('download-youtube-video')) return;

  var video_id = null;
  var video_hash = null;
  var video_player = document.getElementById('movie_player');

  if (video_player) {

	var flash_variables = video_player.attributes.getNamedItem('flashvars');
	if (flash_variables) {
		var flash_values = flash_variables.value;
		if (flash_values) {
			var video_id_match = flash_values.match(/[^a-z]video_id=([^(\&|$)]*)/);
			if (video_id_match)
				video_id = video_id_match[1];
			var video_hash_match = flash_values.match(/[^a-z]t=([^(\&|$)]*)/);
			if (video_hash_match)
				video_hash = video_hash_match[1];
		}
	}

  }

	if (video_id==null || video_hash==null) {
		var args = unsafeWindow.swfArgs;
		if (args) {
			video_id = video_id || args['video_id'];
			video_hash = video_hash || args['t'];
		}
	}

	if (video_id==null || video_hash==null) return;

	var p = document.getElementById('watch-embed-div');
	if (p) {
		var div = document.createElement('div');
		div.id = 'download-youtube-video';
		var a = document.createElement('a');
		a.setAttribute('href', 'http://www.youtube.com/get_video?fmt=' +
			(unsafeWindow.isHDAvailable ? '22' : '18') +
			'&amp;video_id=' + video_id +
			'&amp;t=' + video_hash);
		var t = document.createTextNode('Télécharger au format MP4');
		a.appendChild(t);
		div.appendChild(a);
		p.appendChild(div);
	}

})();
